/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package edu.asu.cse360.context;

import edu.asu.cse360.service.AuthenticationService;
import edu.asu.cse360.service.EmployeeService;
import edu.asu.cse360.service.ItemOrderService;
import edu.asu.cse360.service.ItemReportService;
import edu.asu.cse360.service.MenuItemService;
import edu.asu.cse360.service.OrderService;
import edu.asu.cse360.service.OrderStatusService;
import edu.asu.cse360.service.PhotoService;
import edu.asu.cse360.service.RestaurantService;
import edu.asu.cse360.service.StaffReportService;
import edu.asu.cse360.service.TableService;
import edu.asu.cse360.service.client.ClientAuthenticationService;
import edu.asu.cse360.service.client.ClientEmployeeService;
import edu.asu.cse360.service.client.ClientItemOrderService;
import edu.asu.cse360.service.client.ClientItemReportService;
import edu.asu.cse360.service.client.ClientMenuItemService;
import edu.asu.cse360.service.client.ClientOrderService;
import edu.asu.cse360.service.client.OrderStatusServiceImpl;
import edu.asu.cse360.service.client.ClientPhotoService;
import edu.asu.cse360.service.client.ClientRestaurantService;
import edu.asu.cse360.service.client.ClientStaffReportService;
import edu.asu.cse360.service.client.ClientTableService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;


@Configuration
@ImportResource("/mock-beans.xml")
public class ClientServiceConfig extends ServiceConfig{

    @Bean
    @Override
    public RestaurantService restaurantService(){
        return new ClientRestaurantService();
    }

    @Bean
    @Override
    public AuthenticationService authenticationService(){
        return new ClientAuthenticationService(employeeService());
    }

    @Bean
    @Override
    public MenuItemService menuItemService(){
        return new ClientMenuItemService();
    }

    
    @Override
    public @Bean ItemOrderService itemOrderService(){
       return new ClientItemOrderService(orderStatusService());
    }

    
    @Override
    public @Bean OrderStatusService orderStatusService() {
       return new OrderStatusServiceImpl();
    }

    @Override
    public @Bean PhotoService photoService() {
        return new ClientPhotoService();
    }

    @Override
    public @Bean TableService tableService() {
        return new ClientTableService();
    }
    @Override
    public @Bean ItemReportService itemReportService() {
        return new ClientItemReportService(itemOrderService());
    }

    @Override
    public @Bean OrderService orderService() {
        return new ClientOrderService();
    }

    @Override
    public @Bean StaffReportService staffReportService() {
        return new ClientStaffReportService();
    }

    @Override
    public @Bean EmployeeService employeeService() {
        return new ClientEmployeeService();
    }

}
